package com.yl.applicationsecurity.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.data.annotation.Id;

import java.util.Date;
import java.util.Objects;

/**
 * @author 鹤仙问鹿仙
 * @program: Application-security
 * @description: 逻辑探针发现越权漏洞
 * @date 2025-02-07 14:16:36
 */
@Data
@TableName("sgm_safe_risk")
/**
 * 安全漏洞实体类
 */
public class SgmSafeRisk {

    /** ID，自增主键 */
    private Long id;

    /** 漏洞类型名称 */
    private String riskTypeName;

    /** 漏洞类型 */
    private Integer riskType;

    /** 漏洞地址 */
    private String url;

    /** URL 请求方法 */
    private String method;

    /** 系统的产品 ID */
    private Long productId;

    /** 模块 */
    private String module;

    /** 菜单 */
    private String menu;

    /** 缺陷等级 */
    private String vulnerLevel;

    /** 应用名称 */
    private String appName;

    /** 国家 */
    private String country;

    /** 系统名称 */
    private String systemName;

    /** 缺陷所属层级，WD（网点），ZX（中心），DLQ（代理区） */
    private String level;

    /** 状态 */
    private Integer status;  // 0 待处理  1 已确认  2 已拒绝  4 已修复 6 误报 7 暂无数据

    /** 描述 */
    private String remark;

    /** 首次发现时间 */
    private Date firstTime;

    /** 最近发现时间 */
    private Date lastTime;

    /** 越权类型，2 代表普通越权，3 代表数据导出越权  4 代表ID置空越权   5 代表ID替换越权 6 代表ID删除越权 */
    private Integer excessiveType;

    /** 关联 ID */
    private Long refId;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    private Date createTime;

    /** 更新者 */

    /** 更新时间 */
    private Date updateTime;

    /** 是否删除 */
    private Byte isDelete;

    /** 租户编号 */
    private Long tenantId;


    /** AI审计结果 */
    private Integer aiCheck; //0 初始状态，1 审计存在越权  2  审计不存在越权

    private Date lastDisposalDate; //最近一次人工处理时间

    private Date lastSystemProcessingDate; //最近一次系统处理时间

    private Date overdueDate;//超期时间

    //private Integer isOverdue;//是否超期 0代表未超期 1代表超期

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SgmSafeRisk that = (SgmSafeRisk) o;
        return Objects.equals(id, that.id) &&
                Objects.equals(riskTypeName, that.riskTypeName) &&
                Objects.equals(riskType, that.riskType) &&
                Objects.equals(url, that.url) &&
                Objects.equals(method, that.method) &&
                Objects.equals(productId, that.productId) &&
                Objects.equals(module, that.module) &&
                Objects.equals(menu, that.menu) &&
                Objects.equals(vulnerLevel, that.vulnerLevel) &&
                Objects.equals(appName, that.appName) &&
                Objects.equals(country, that.country) &&
                Objects.equals(systemName, that.systemName) &&
                Objects.equals(level, that.level) &&
                Objects.equals(status, that.status) &&
                Objects.equals(remark, that.remark) &&
                Objects.equals(firstTime, that.firstTime) &&
                Objects.equals(lastTime, that.lastTime) &&
                Objects.equals(excessiveType, that.excessiveType) &&
                Objects.equals(refId, that.refId) &&
                Objects.equals(createBy, that.createBy) &&
                Objects.equals(createTime, that.createTime) &&
                Objects.equals(updateTime, that.updateTime) &&
                Objects.equals(isDelete, that.isDelete) &&
                Objects.equals(tenantId, that.tenantId) &&
                Objects.equals(aiCheck, that.aiCheck) &&
                Objects.equals(lastDisposalDate, that.lastDisposalDate) &&
                Objects.equals(lastSystemProcessingDate, that.lastSystemProcessingDate) &&
                Objects.equals(overdueDate, that.overdueDate);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, riskTypeName, riskType, url, method, productId, module, menu,
                vulnerLevel, appName, country, systemName, level, status, remark, firstTime, lastTime,
                excessiveType, refId, createBy, createTime, updateTime, isDelete, tenantId,
                aiCheck, lastDisposalDate, lastSystemProcessingDate, overdueDate);
    }


}


